/** ****提交校验方法****** */
// 校验是否为空
const isNull = (str) => {
  return str === 'null' || str === 'undefined' || str == null;
};

// 校验是否为空或空字符串
const isNullOrEmpty = (str) => {
  return isNull(str) || (`${str}`).trim().length === 0;
};

// 校验是否为非'null''undefined'的纯空字符串
const isEmptyStr = (str) => {
  return !isNull(str) && (`${str}`).trim().length === 0;
};

// 校验是否为日期格式
const isDate = (date) => {
  const a = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  if (a == null) { return !1; }
  const d = new Date(a[1], a[3] - 1, a[4]);
  return d.getFullYear() === a[1] && d.getMonth() + 1 === a[3] && d.getDate() === a[4];
};
// 校验是否为日期时间格式
const isDateTime = (datetime) => {
  const a = datetime.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
  if (a == null) { return !1; }
  const d = new Date(a[1], a[3] - 1, a[4], a[5], a[6], a[7]);
  return d.getFullYear() === a[1] && d.getMonth() + 1 === a[3] && d.getDate() === a[4] && d.getHours() === a[5] && d.getMinutes() === a[6] && d.getSeconds() === a[7];
};
// 校验是否为邮箱格式
const isEmail = (email) => {
  const reg = /^([a-zA-Z0-9]+[_|\-|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
  return !isEmptyStr(email) && reg.test(email);
};
// 校验是否为货币格式
const isMoney = (money) => {
  const reg = /^[+-]?\d+(,\d{3})*(\.\d+)?$/;
  return !isEmptyStr(money) && reg.test(money);
};
// 校验是否为数字
const isNumeric = (num) => {
  const reg = /^[0-9]*$/;
  return !isEmptyStr(num) && reg.test(num);
};
// 校验是否为浮点数
const isNumberFloat = (num) => {
  const reg = /^\d+(\.\d+)?$/;
  return !isEmptyStr(num) && reg.test(num);
};
// 校验是否为字母、数字、下划线
const isEnNumeric = (str) => {
  const reg = /^[_0-9a-zA-Z]+$/;
  return !isEmptyStr(str) && reg.test(str);
};
// 校验是否为字母、数字、下划线、中文
const isCnAndEnNumeric = (str) => {
  const reg = /^[_0-9a-zA-Z\u4e00-\u9fa5]+$/;
  return !isEmptyStr(str) && reg.test(str);
};
// 校验是否为真实姓名，中国人姓名长度一般是2~4
const isRealName = (name) => {
  const reg = /^[\u4e00-\u9fa5]{2,4}$/;
  return !isEmptyStr(name) && reg.test(name);
};
// 校验是否电话号码
const isphone = (phone) => {
  const reg = /(^\(\d{3,5}\)\d{6,8}(-\d{2,8})?$)|(^\d+-\d+$)|(^1[3|4|5|7|8]\d{9}$)/;
  return !isEmptyStr(phone) && reg.test(phone);
};
// 校验是否为手机号码
const isMobile = (mobile) => {
  const reg = /^1[3|4|5|7|8]\d{9}$/;
  return reg.test(mobile);
};
// 校验是否tel
const isTel = (tel) => {
  const reg = /^1[0-9]\d{9}$/;
  return !isEmptyStr(tel) && reg.test(tel);
};
// 校验是否为QQ
const isQQ = (qq) => {
  const reg = /^[1-9]\d{4,9}$/;
  return !isEmptyStr(qq) && reg.test(qq);
};
// 校验是否为weixin
const isWX = (wx) => {
  const reg = /^[a-zA-Z\d_]{5,}$/;
  return !isEmptyStr(wx) && reg.test(wx);
};
// 校验是否为地址
const isURL = (url) => {
  const reg = /^(http|https|ftp):\/\/(\w+\.)+[a-z]{2,3}(\/\w+)*(\/\w+\.\w+)*(\?\w+=\w*(&\w+=\w*)*)*/;
  return reg.test(url);
};

export default {
  isNull,
  isEmptyStr,
  isNullOrEmpty,
  isDate,
  isDateTime,
  isEmail,
  isMoney,
  isNumeric,
  isNumberFloat,
  isEnNumeric,
  isCnAndEnNumeric,
  isRealName,
  isphone,
  isMobile,
  isTel,
  isQQ,
  isWX,
  isURL
};
